import type { RouteRecordRaw } from 'vue-router'

/**
 * 根据角色过滤路由表
 * @param routes 路由表
 * @param role 角色
 * @returns 过滤后的路由表
 */
export function filterRoutesByRole(routes: RouteRecordRaw[], role: string): RouteRecordRaw[] {
  // 定义一个空数组，用于存放过滤后的路由
  const filtered: RouteRecordRaw[] = []

  // 遍历路由数组
  routes.forEach((route) => {
    // 复制当前路由
    const temp = { ...route }
    // 获取当前路由的meta中的roles属性
    const roles = temp.meta?.roles as string[] | undefined

    // 如果当前路由没有roles属性或者roles属性中包含当前角色
    if (!roles || roles.includes(role)) {
      // 如果当前路由有子路由，则递归调用filterRoutesByRole函数，过滤子路由
      if (temp.children) {
        temp.children = filterRoutesByRole(temp.children, role)
      }
      // 将过滤后的路由添加到filtered数组中
      filtered.push(temp)
    }
  })

  // 返回过滤后的路由数组
  return filtered
}
